void SqlDatabase::close()
{
if (_db) {
- foreach (auto q, _queries) {
+ for (auto q : qAsConst(_queries)) {
q->finish();
}
SQLITE_DO(sqlite3_close(_db));
if (!_etagStorageFilter.isEmpty()) {
// If we are a directory that should not be read from db next time, don't write the etag
QByteArray prefix = record._path + "/";
- foreach (const QByteArray &it, _etagStorageFilter) {
+ for (const QByteArray &it : qAsConst(_etagStorageFilter)) {
if (it.startsWith(prefix)) {
qCInfo(lcDb) << "Filtered writing the etag of" << prefix << "because it is a prefix of" << it;
record._etag = "_invalid_";
qCDebug(lcDb) << "Removing stale" << name << "entries:" << entries.join(QStringLiteral(", "));
// FIXME: Was ported from execBatch, check if correct!
- foreach (const QString &entry, entries) {
+ for (const QString &entry : qAsConst(entries)) {
query.reset_and_clear_bindings();
query.bindValue(1, entry);
if (!query.exec()) {
qCInfo(lcFolderMan) << "Account" << accountName << "disconnected or paused, "
"terminating or descheduling sync folders";
- foreach (Folder *f, _folderMap.values()) {
+ for (Folder *f : qAsConst(_folderMap.values())) {
if (f
&& f->isSyncRunning()
&& f->accountState() == accountState) {
QTreeWidgetItem *it = _ui.folderTreeWidget->topLevelItem(0);
if (!path.isEmpty()) {
const QStringList pathTrail = path.split(QLatin1Char('/'));
- foreach (const QString &path, pathTrail) {
+ for (const QString &path : qAsConst(pathTrail)) {
if (!it) {
return false;
}
}
QStringList sortedList = list;
Utility::sortFilenames(sortedList);
- foreach (QString path, sortedList) {
+ for (QString path : sortedList) {
path.remove(webdavFolder);
// Don't allow to select subfolders of encrypted subfolders
// We need to force a remote discovery after a change of the ignore list.
// Otherwise we would not download the files/directories that are no longer
// ignored (because the remote etag did not change) (issue #3172)
- foreach (Folder *folder, folderMan->map()) {
+ for (Folder *folder : qAsConst(folderMan->map())) {
folder->journalDb()->forceRemoteDiscoveryNextSync();
folderMan->scheduleFolder(folder);
}
{
QSet<QString> unlocked;
- foreach (const QString &path, _watchedPaths) {
+ for (const QString &path : _watchedPaths) {
if (!FileSystem::isFileLocked(path)) {
qCInfo(lcLockWatcher) << "Lock of" << path << "was released";
emit fileUnlocked(path);
QStringList subdirs;
subdirs << "/applications/"
<< "/applications/kde4/";
- foreach (QString dir, dirs) {
- foreach (QString subdir, subdirs) {
+ for (const QString &dir : dirs) {
+ for (const QString &subdir : subdirs) {
fi.setFile(dir + subdir + fileName);
if (fi.exists()) {
return fi.absoluteFilePath();
#ifdef Q_OS_WIN
// Windows has a 128-char tray tooltip length limit.
QStringList accountNames;
- foreach (AccountStatePtr a, problemAccounts) {
+ for (const AccountStatePtr &a : qAsConst(problemAccounts)) {
accountNames.append(a->account()->displayName());
}
_tray->setToolTip(tr("Disconnected from %1").arg(accountNames.join(QLatin1String(", "))));
account->signIn();
} else {
auto list = AccountManager::instance()->accounts();
- foreach (const auto &a, list) {
+ for (const auto &a : qAsConst(list)) {
a->signIn();
}
}
list.append(account);
}
- foreach (const auto &ai, list) {
+ for (const auto &ai : qAsConst(list)) {
ai->signOutByUi();
}
}
if (parent->checkState(0) == Qt::Checked
|| parent->checkState(0) == Qt::PartiallyChecked) {
item->setCheckState(0, Qt::Checked);
- foreach (const QString &str, _oldBlackList) {
+ for (const QString &str : qAsConst(_oldBlackList)) {
if (str == path || str == QLatin1String("/")) {
item->setCheckState(0, Qt::Unchecked);
break;
// list of top-level folders as soon as possible.
if (_oldBlackList == QStringList("/")) {
_oldBlackList.clear();
- foreach (QString path, list) {
+ for (QString path : qAsConst(list)) {
path.remove(pathToRemove);
if (path.isEmpty()) {
continue;
}
Utility::sortFilenames(list);
- foreach (QString path, list) {
+ for (QString path : qAsConst(list)) {
auto size = job ? job->_folderInfos[path].size : 0;
path.remove(pathToRemove);
} else {
// We did not load from the server so we reuse the one from the old black list
QString path = root->data(0, Qt::UserRole).toString();
- foreach (const QString &it, _oldBlackList) {
+ for (const QString &it : qAsConst(_oldBlackList)) {
if (it.startsWith(path))
result += it;
}
// (the ones that are no longer in the blacklist)
auto blackListSet = QSet<QString>{blackList.begin(), blackList.end()};
auto changes = (oldBlackListSet - blackListSet) + (blackListSet - oldBlackListSet);
- foreach (const auto &it, changes) {
+ for (const auto &it : qAsConst(changes)) {
_folder->journalDb()->schedulePathForRemoteDiscovery(it);
_folder->schedulePathForLocalDiscovery(it);
}
QString background(palette().base().color().name());
_toolBar->setStyleSheet(TOOLBAR_CSS().arg(background, dark, highlightColor, highlightTextColor));
- Q_FOREACH (QAction *a, _actionGroup->actions()) {
+ for (QAction *a : qAsConst(_actionGroup->actions())) {
QIcon icon = Theme::createColorAwareIcon(a->property("iconPath").toString(), palette());
a->setIcon(icon);
auto *btn = qobject_cast<QToolButton *>(_toolBar->widgetForAction(a));
*/
static void updateFolder(const AccountPtr &account, QStringView path)
{
- foreach (Folder *f, FolderMan::instance()->map()) {
+ for (Folder *f : qAsConst(FolderMan::instance()->map())) {
if (f->accountState()->account() != account)
continue;
auto folderPath = f->remotePath();
[=](const QJsonDocument &reply) {
// Find existing share permissions (if this was shared with us)
Share::Permissions existingPermissions = SharePermissionAll;
- foreach (const QJsonValue &element, reply.object()["ocs"].toObject()["data"].toArray()) {
+ for (const QJsonValue &element : reply.object()["ocs"].toObject()["data"].toArray()) {
auto map = element.toObject();
if (map["file_target"] == path)
existingPermissions = Share::Permissions(map["permissions"].toInt());
QList<SharePtr> shares;
- foreach (const auto &share, tmpShares) {
+ for (const auto &share : qAsConst(tmpShares)) {
auto data = share.toObject();
auto shareType = data.value("share_type").toInt();
const auto systemCerts = QSslConfiguration::systemCaCertificates();
QList<QSslCertificate> tmpChain;
- foreach (QSslCertificate cert, chain) {
+ for (const QSslCertificate &cert : qAsConst(chain)) {
tmpChain << cert;
if (systemCerts.contains(cert))
break;
msg += QL("<h3>") + tr("Cannot connect securely to <i>%1</i>:").arg(host) + QL("</h3>");
// loop over the unknown certs and line up their errors.
msg += QL("<div id=\"ca_errors\">");
- foreach (const QSslCertificate &cert, _unknownCerts) {
+ for (const QSslCertificate &cert : _unknownCerts) {
msg += QL("<div id=\"ca_error\">");
// add the errors for this cert
- foreach (QSslError err, errors) {
+ for (const auto &err : qAsConst(errors)) {
if (err.certificate() == cert) {
msg += QL("<p>") + err.errorString() + QL("</p>");
}
}
auto actions = json.value("actions").toArray();
- foreach (auto action, actions) {
+ for (auto action : qAsConst(actions)) {
activity._links.append(ActivityLink::createFomJsonObject(action.toObject()));
}
return displayLocation();
case ActionsLinksRole: {
QList<QVariant> customList;
- foreach (ActivityLink activityLink, a._links) {
+ for (const ActivityLink &activityLink : qAsConst(a._links)) {
customList << QVariant::fromValue(activityLink);
}
return customList;
return;
}
- foreach (Activity activity, _listOfIgnoredFiles) {
+ for (const Activity &activity : qAsConst(_listOfIgnoredFiles)) {
if (activity._file == newActivity._file) {
duplicate = true;
break;
ActivityList list;
ActivityList callList;
- foreach (auto element, notifies) {
+ for (auto element : qAsConst(notifies)) {
auto json = element.toObject();
auto a = Activity::fromActivityJson(json, ai->account());
return;
const auto &engine = f->syncEngine();
const auto style = engine.lastLocalDiscoveryStyle();
- foreach (Activity activity, _activityModel->errorsList()) {
+ for (const Activity &activity : _activityModel->errorsList()) {
if (activity._expireAtMsecs != -1) {
// we process expired activities in a different slot
continue;
// We keep track very well of pending conflicts.
// Inform other components about them.
QStringList conflicts;
- foreach (Activity activity, _activityModel->errorsList()) {
+ for (const Activity &activity : _activityModel->errorsList()) {
if (activity._folder == folder
&& activity._syncFileItemStatus == SyncFileItem::Conflict) {
conflicts.append(activity._file);
NetworkJobTimeoutPauser pauser(reply);
QString out;
QDebug(&out) << "SSL-Errors happened for url " << reply->url().toString();
- foreach (const QSslError &error, errors) {
+ for (const QSslError &error : qAsConst(errors)) {
QDebug(&out) << "\tError in " << error.certificate() << ":"
<< error.errorString() << "(" << error.error() << ")"
<< "\n";
qCInfo(lcAccount()) << reply->sslConfiguration().peerCertificateChain();
bool allPreviouslyRejected = true;
- foreach (const QSslError &error, errors) {
+ for (const QSslError &error : qAsConst(errors)) {
if (!_rejectedCertificates.contains(error.certificate())) {
allPreviouslyRejected = false;
}
return;
// Mark all involved certificates as rejected, so we don't ask the user again.
- foreach (const QSslError &error, errors) {
+ for (const QSslError &error : qAsConst(errors)) {
if (!_rejectedCertificates.contains(error.certificate())) {
_rejectedCertificates.append(error.certificate());
}
auto data = json.object().value("ocs").toObject().value("data").toObject();
auto editors = data.value("editors").toObject();
- foreach (auto editorKey, editors.keys()) {
+ for (const auto &editorKey : qAsConst(editors.keys())) {
auto editor = editors.value(editorKey).toObject();
const QString id = editor.value("id").toString();
auto *directEditor = new DirectEditor(id, name);
- foreach(auto mimeType, mimeTypes) {
+ for (const auto &mimeType : qAsConst(mimeTypes)) {
directEditor->addMimetype(mimeType.toString().toLatin1());
}
- foreach(auto optionalMimeType, optionalMimeTypes) {
+ for (const auto &optionalMimeType : qAsConst(optionalMimeTypes)) {
directEditor->addOptionalMimetype(optionalMimeType.toString().toLatin1());
}
QList<QByteArray> Capabilities::supportedChecksumTypes() const
{
QList<QByteArray> list;
- foreach (const auto &t, _capabilities["checksums"].toMap()["supportedTypes"].toList()) {
+ for (const auto &t : qAsConst(_capabilities["checksums"].toMap()["supportedTypes"].toList())) {
list.push_back(t.toByteArray());
}
return list;
QList<int> Capabilities::httpErrorCodesThatResetFailingChunkedUploads() const
{
QList<int> list;
- foreach (const auto &t, _capabilities["dav"].toMap()["httpErrorCodesThatResetFailingChunkedUploads"].toList()) {
+ for (const auto &t : qAsConst(_capabilities["dav"].toMap()["httpErrorCodesThatResetFailingChunkedUploads"].toList())) {
list.push_back(t.toInt());
}
return list;
DirectEditor* Capabilities::getDirectEditorForMimetype(const QMimeType &mimeType)
{
- foreach(DirectEditor* editor, _directEditors) {
+ for (DirectEditor* editor : qAsConst(_directEditors)) {
if(editor->hasMimetype(mimeType))
return editor;
}
DirectEditor* Capabilities::getDirectEditorForOptionalMimetype(const QMimeType &mimeType)
{
- foreach(DirectEditor* editor, _directEditors) {
+ for (DirectEditor* editor : qAsConst(_directEditors)) {
if(editor->hasOptionalMimetype(mimeType))
return editor;
}
from_dir += QDir::separator();
to_dir += QDir::separator();
- foreach (QString copy_file, dir.entryList(QDir::Files)) {
+ for (const QString ©_file : qAsConst(dir.entryList(QDir::Files))) {
QString from = from_dir + copy_file;
QString to = to_dir + copy_file;
}
}
- foreach (QString copy_dir, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) {
+ for (const QString ©_dir : qAsConst(dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))) {
QString from = from_dir + copy_dir;
QString to = to_dir + copy_dir;
QList<QNetworkCookie> CookieJar::removeExpired(const QList<QNetworkCookie> &cookies)
{
QList<QNetworkCookie> updatedList;
- foreach (const QNetworkCookie &cookie, cookies) {
+ for (const QNetworkCookie &cookie : qAsConst(cookies)) {
if (cookie.expirationDate() > QDateTime::currentDateTimeUtc() && !cookie.isSessionCookie()) {
updatedList << cookie;
}
item->_errorString = tr("File names ending with a period are not supported on this file system.");
} else {
char invalid = '\0';
- foreach (char x, QByteArray("\\:?*\"<>|")) {
+ for (char x : QByteArray("\\:?*\"<>|")) {
if (item->_file.contains(x)) {
invalid = x;
break;
}
int started = 0;
- foreach (auto *rj, _runningJobs) {
+ for (auto *rj : qAsConst(_runningJobs)) {
started += rj->processSubJobs(nbJobs - started);
if (started >= nbJobs)
return started;
qCWarning(lcLsColJob) << "Propfind with no properties!";
}
QByteArray propStr;
- foreach (const QByteArray &prop, properties) {
+ for (const QByteArray &prop : qAsConst(properties)) {
if (prop.contains(':')) {
int colIdx = prop.lastIndexOf(":");
auto ns = prop.left(colIdx);
QVector<PropagatorJob *> directoriesToRemove;
QString removedDirectory;
QString maybeConflictDirectory;
- foreach (const SyncFileItemPtr &item, items) {
+ for (const SyncFileItemPtr &item : qAsConst(items)) {
if (!removedDirectory.isEmpty() && item->_file.startsWith(removedDirectory)) {
// this is an item in a directory which is going to be removed.
auto *delDirJob = qobject_cast<PropagateDirectory *>(directoriesToRemove.first());
}
}
- foreach (PropagatorJob *it, directoriesToRemove) {
+ for (PropagatorJob *it : qAsConst(directoriesToRemove)) {
_rootJob->appendDirDeletionJob(it);
}
// checkForPermissions() has already run and used the permissions
// of the file we're about to delete to decide whether uploading
// to the new dir is ok...
- foreach (const SyncFileItemPtr &dirItem, items) {
+ for (const SyncFileItemPtr &dirItem : qAsConst(items)) {
if (dirItem->destination().startsWith(item->destination() + "/")) {
dirItem->_instruction = CSYNC_INSTRUCTION_NONE;
_anotherSyncNeeded = true;
qint64 PropagatorCompositeJob::committedDiskSpace() const
{
qint64 needed = 0;
- foreach (PropagatorJob *job, _runningJobs) {
+ for (PropagatorJob *job : qAsConst(_runningJobs)) {
needed += job->committedDiskSpace();
}
return needed;
{
if (!_runningJobs.empty()) {
_abortsCount = _runningJobs.size();
- foreach (PropagatorJob *j, _runningJobs) {
+ for (PropagatorJob *j : qAsConst(_runningJobs)) {
if (abortType == AbortType::Asynchronous) {
connect(j, &PropagatorJob::abortFinished,
this, &PropagatorCompositeJob::slotSubJobAbortFinished);
void ProgressInfo::recomputeCompletedSize()
{
qint64 r = _totalSizeOfCompletedJobs;
- foreach (const ProgressItem &i, _currentItems) {
+ for (const ProgressItem &i : qAsConst(_currentItems)) {
if (isSizeDependent(i._item))
r += i._progress._completed;
}
};
// Abort all running jobs, except for explicitly excluded ones
- foreach (AbstractNetworkJob *job, _jobs) {
+ for (AbstractNetworkJob *job : qAsConst(_jobs)) {
auto reply = job->reply();
if (!reply || !reply->isRunning())
continue;
SyncJournalDb::UploadInfo pi;
pi._valid = true;
auto currentChunk = job->_chunk;
- foreach (auto *job, _jobs) {
+<<<<<<< HEAD
+ for (auto *otherJob : qAsConst(_jobs)) {
+=======
+ for (auto *job : std::as_const(_jobs)) {
+>>>>>>> a0aaf26d9 (fixed wrong variable name)
// Take the minimum finished one
if (auto putJob = qobject_cast<PUTFileJob *>(job)) {
currentChunk = qMin(currentChunk, putJob->_chunk - 1);
sender()->setProperty("byteWritten", sent);
if (_jobs.count() > 1) {
amount -= (_jobs.count() - 1) * chunkSize();
- foreach (QObject *j, _jobs) {
+ for (QObject *j : qAsConst(_jobs)) {
amount += j->property("byteWritten").toULongLong();
}
} else {
// We need to delete the entries from the database now from the deleted vector.
// Do it while avoiding redundant delete calls to the journal.
QString deletedDir;
- foreach (const auto &it, deleted) {
+ for (const auto &it : qAsConst(deleted)) {
if (!it.first.startsWith(propagator()->localPath()))
continue;
if (!deletedDir.isEmpty() && it.first.startsWith(deletedDir))
{
// Find all downloadinfo paths that we want to preserve.
QSet<QString> download_file_paths;
- foreach (const SyncFileItemPtr &it, syncItems) {
+ for (const SyncFileItemPtr &it : qAsConst(syncItems)) {
if (it->_direction == SyncFileItem::Down
&& it->_type == ItemTypeFile
&& isFileTransferInstruction(it->_instruction)) {
// Delete from journal and from filesystem.
const QVector<SyncJournalDb::DownloadInfo> deleted_infos =
_journal->getAndDeleteStaleDownloadInfos(download_file_paths);
- foreach (const SyncJournalDb::DownloadInfo &deleted_info, deleted_infos) {
+ for (const SyncJournalDb::DownloadInfo &deleted_info : qAsConst(deleted_infos)) {
const QString tmppath = _propagator->fullLocalPath(deleted_info._tmpfile);
qCInfo(lcEngine) << "Deleting stale temporary file: " << tmppath;
FileSystem::remove(tmppath);
{
// Find all blacklisted paths that we want to preserve.
QSet<QString> upload_file_paths;
- foreach (const SyncFileItemPtr &it, syncItems) {
+ for (const SyncFileItemPtr &it, qAsConst(syncItems)) {
if (it->_direction == SyncFileItem::Up
&& it->_type == ItemTypeFile
&& isFileTransferInstruction(it->_instruction)) {
// Delete the stales chunk on the server.
if (account()->capabilities().chunkingNg()) {
- foreach (uint transferId, ids) {
+ for (uint transferId : qAsConst(ids)) {
if (!transferId)
continue; // Was not a chunked upload
QUrl url = Utility::concatUrlPath(account()->url(), QLatin1String("remote.php/dav/uploads/") + account()->davUser() + QLatin1Char('/') + QString::number(transferId));
{
// Find all blacklisted paths that we want to preserve.
QSet<QString> blacklist_file_paths;
- foreach (const SyncFileItemPtr &it, syncItems) {
+ for (const SyncFileItemPtr &it : qAsConst(syncItems)) {
if (it->_hasBlacklistEntry)
blacklist_file_paths.insert(it->_file);
}
ProblemsMap oldProblems;
std::swap(_syncProblems, oldProblems);
- foreach (const SyncFileItemPtr &item, items) {
+ for (const SyncFileItemPtr &item : qAsConst(items)) {
qCInfo(lcStatusTracker) << "Investigating" << item->destination() << item->_status << item->_instruction << item->_direction;
_dirtyPaths.remove(item->destination());
tests.append(Test("\"fii\"-gzip", "fii"));
tests.append(Test("W/\"foo\"", "foo"));
- foreach (const auto& test, tests) {
+ for (const auto &test : qAsConst(tests)) {
QCOMPARE(parseEtag(test.first), QByteArray(test.second));
}
}